/**
 * CamelCase
 * 横杠命名转化为驼峰命名
 */
 type CapitalizeString<T> = T extends `${infer L}${infer R}` ? `${Uppercase<L>}${R}` :  T

 type CamelCase<T extends string, Prev extends string = ''> = T extends `${infer L}-${infer R}` ? CamelCase<R, `${Prev}${CapitalizeString<L>}`> : `${Prev}${CapitalizeString<T>}`
 
 type a1 = CamelCase<'handle-open-flag'>         // HandleOpenFlag
 type a2 = CamelCase<'open-flag'>                // OpenFlag
 
 export {}